package com.pjb.springbootjjwt.service;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.pjb.springbootjjwt.config.JwtConfig;
import com.pjb.springbootjjwt.entity.User;
import org.springframework.stereotype.Service;

import java.util.Date;



@Service
public class TokenService {
    public String getToken(User user) {
        //JwtConfig.EXPIRE_TIME 过期时间3*60*1000毫秒
        Date date = new Date(System.currentTimeMillis() + JwtConfig.EXPIRE_TIME);
        String token="";
        token= JWT.create()
                //签名主题
                .withSubject("this is a test token")
                //签名由谁生成
                .withIssuer("Server")
                //生成签名的时间
                .withIssuedAt(new Date())
                //签名过期时间
                .withExpiresAt(date)
                //签名的观众 也可以理解谁接受签名的
                .withAudience(user.getId())// 将 user id 保存到 token 里面
                //设置载荷 payload (key-value形式,可以有多个载荷)
                .withClaim("loginName",user.getUsername())
                /*签名主要内容  Signature */
                .sign(Algorithm.HMAC256(user.getPassword()));// 以 password 作为 token 的密钥
        return token;
    }
}
